Host route convergence based on sequence values

ABSTRACT

In an example embodiment, a method is provided that assigns a sequence value to a host. The host is identified by a host network layer address. After the assignment, the host network layer address and the sequence value are included in an advertisement for transmission. In another example embodiment, another method is provided. Here, a first sequence value associated with the host network layer address is received from a network device. In addition, a second sequence value associated with the same host network layer address is received from a different network device. The first sequence value is ranked relative to the second sequence value and data is transmitted to the network device based on the ranking.

PRIORITY APPLICATION

This application is a continuation of and claims priority to U.S.application Ser. No. 12/013,176, filed on Jan. 11, 2008, which isincorporated herein by reference in its entirety.

FIELD

The present disclosure relates generally to computer networks. In anexample embodiment, the disclosure relates to host route convergencebased on sequence values.

BACKGROUND

When a host moves from one network device to another network device,other network devices within a computer network need to update theirrouting information such that the routes converge on the new location ofthe host. Such routing information is needed to keep host connectionsand to minimize loss of network traffic. When a host moves from onenetwork device to another network device, current routing protocolsrequire the old network device (without the host) to transmit a withdrawmessage and the new network device (with the host) to advertise the newroute. The other network devices will transmit data to the new networkdevice only after they have received the withdraw message.

However, the transmission and receipt of withdraw messages can taketime, which delays host route convergence. The network trafficassociated with the transmission of withdraw messages can seize a largeamount of network bandwidth. Furthermore, the delays associated withwaiting for withdraw messages can cause packet loss.

BRIEF DESCRIPTION OF DRAWINGS

The present disclosure is illustrated by way of example and notlimitation in the figures of the accompanying drawings, in which likereferences indicate similar elements and in which:

FIG. 1 is a diagram of a networked system, in accordance with an exampleembodiment;

FIG. 2 is a simplified block diagram of a module included in anapparatus, in accordance with an example embodiment;

FIG. 3 is a flow diagram of a general overview of a method, inaccordance with an example embodiment, for assigning a sequence value toa host;

FIG. 4 is a flow diagram of detailed operations, in accordance with anexample embodiment, for generating a sequence value;

FIG. 5 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating the assignment of a sequence valueto a host and the advertisement of the sequence value;

FIG. 6 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating the assignment of a sequence valueto a host after the host has moved;

FIG. 7 is a flow diagram of a general overview of a method, inaccordance with an example embodiment, for host route convergence basedon rankings;

FIG. 8 is a flow diagram of more detailed operations, in accordance withan example embodiment, for host route convergence based on rankings;

FIG. 9 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating host route convergence; and

FIG. 10 is a simplified block diagram of a machine in the example formof a computing system within which a set of instructions, for causingthe machine to perform any one or more of the methodologies discussedherein, may be executed.

DESCRIPTION OF EXAMPLE EMBODIMENTS

In the following description, for purposes of explanation, numerousspecific details are set forth in order to provide a thoroughunderstanding of an example embodiment of the present disclosure. Itwill be evident, however, to one skilled in the art that the presentdisclosure may be practiced without these specific details.

OVERVIEW

In an example embodiment, a method is provided that assigns a sequencevalue to a host. The host is identified by a host network layer address.After the assignment, the host network layer address and the sequencevalue are included in an advertisement for transmission. In anotherexample embodiment, another method is provided. Here, a first sequencevalue associated with the host network layer address is received from anetwork device. In addition, a second sequence value associated with thesame host network layer address is received from a different networkdevice. The first sequence value is ranked relative to the secondsequence value and data is transmitted to one network device or theother network device based on the ranking.

EXAMPLE EMBODIMENTS

FIG. 1 is a diagram of a networked system, in accordance with an exampleembodiment. Generally, computer network 100 is a geographicallydistributed collection of nodes interconnected by communication linksand segments for transporting data between end nodes, such as personalcomputers and workstations. Computer network 100 may be furtherinterconnected by one or more intermediate network nodes, such asswitches 130-138 and routers 124-127. Examples of computer networks,such as computer network 100, include local area networks and wide areanetworks. A local area network connects the nodes over dedicated privatecommunications links located in the same general physical location, suchas a building or campus. A wide area network, on the other hand,connects geographically dispersed nodes over long-distancecommunications links, such as common carrier telephone lines,opticallightpaths, synchronous optical networks (SONET), or synchronousdigital hierarchy (SDH) links. The Internet is an example of a wide areanetwork that connects disparate networks throughout the world, providingglobal communication between nodes on various networks. The nodescommunicate over computer network 100 by exchanging discrete frames orpackets of data according to predefined protocols, such as TransmissionControl Protocol/Internet Protocol (TCP/IP), User Datagram Protocol(UDP), Asynchronous Transfer Mode (ATM) protocol, Frame Relay protocol,Internet Packet Exchange (IPX) protocol, interior gateway protocol(IGP), and other protocols.

One or more nodes may be in communication with a host, such as hosts 150or 151. Hosts 150 and 151 are devices or program applications that canprovide services to other devices or programs. As shown in FIG. 1,computer network 100 includes hosts 150 and 151 in communication withswitches 136 and 131, respectively. Examples of hosts 150 and 151include, for example, computers, Voice-over-IP (VoIP) telephone, mobiletelephone 28, servers, and other hosts.

It should be appreciated that groups of computer networks may bemaintained as routing domains. A domain is a collection of nodes (e.g.,switches and/or routers) under the control of one or more entities thatpresent a common routing policy. Core domain 121 (or backbone domain) isan example of a domain. To improve routing scalability, a serviceprovider (e.g., an Internet service provider) may divide a domain intomultiple sub-domains 102 and 103. It should be noted that a number ofnodes, routers, links, etc. may be used in computer network 100, andthat the computer network of FIG. 1 shown herein is for simplicity.Further, computer network 100 is described in relation to multipledomains and sub-domains, and the computer network may apply to a varietyof other intra-domain network configurations, such as inter-AS,intra-area, intra-level, and other network configurations.

FIG. 2 is a simplified block diagram of a module included in anapparatus, in accordance with an example embodiment. Apparatus 200includes operating system 202 (e.g., an Internetworking OperatingSystem) that manages the software processes and/or services executing onthe apparatus. As shown in FIG. 2, these software processes and/orservices may include sequence value assignment module 204. It should beappreciated that apparatus 200 may be deployed in the form of a varietyof network devices that receive data for communication to other networkdevices, such as switches, routers or the like. For example, apparatus200 may form a part of one of the switches depicted in FIG. 1. Returningto FIG. 2, in various example embodiments, apparatus 200 may be used toimplement computer programs, logic, applications, methods, processes, orother software to assign sequence values to hosts and to converge on ahost (or host route convergence) based on sequence value rankings, asdescribed in more detail below.

In brief, sequence value assignment module 204 can assign a sequencevalue to a host. As explained in more detail below, the sequence value,a network layer address associated with the host (or host network layeraddress), and a network layer address associated with apparatus 200 areincluded in an advertisement, which is transmitted to other networkdevices. Sequence value assignment module 204 may also be configured toreceive various advertisements from other network devices and to extractsequence values from the advertisements. As described in more detailbelow, sequence value assignment module 204 ranks the sequence valuesand converges on a particular host based on the ranking.

It should be appreciated that in other example embodiments, apparatus200 may include fewer or more modules apart from those shown in FIG. 2.For example, sequence value assignment module 204 may be separated intoan assignment module that generates and assigns sequence values and aranking module that ranks received sequence values.

FIG. 3 is a flow diagram of a general overview of a method, inaccordance with an example embodiment, for assigning a sequence value toa host. In an example embodiment, method 300 may be implemented bysequence value assignment module 204 of FIG. 2, employed in anapparatus, such as switch 136 of FIG. 1. As shown in FIG. 3, at 302, asequence value is assigned to a host. Sequence values are a set of datathat have an inherent order. The sequence value may be represented bynumbers, letters, or other alphanumeric characters. For example, thesequence value may be a string of numbers, such as “1,” “2,” “100,”“1112.2,” or other numbers. Alternatively, the sequence value may becharacters, such as “a,” “AA,” “b,” or other characters. As explained inmore detail below, the sequence value can be increased or decreased suchthat the sequence value may form the basis for comparison with othersequence values. It should be noted that, in an example embodiment, thesequence value may be assigned to a host when this host is associatedwith a network device. For example, a switch can assign a sequence valueupon the detection of a new host.

A host and a network device can be identified by a network layeraddress. In general, a network layer address is an address used bynetwork devices to identify and communicate with each other on acomputer network. An example of a network layer address is the InternetProtocol (IP) address. Route information is exchanged between networkdevices in advertisements to facilitate the routing of network traffic.In general, a route is a unit of information that pairs a destinationwith the attributes of a path to that destination. An example of anadvertisement is an UPDATE message. It should be noted that networklayer addresses and sequence values may be included in a variety ofdifferent forms of advertisements. For example, a single message mayinclude a single advertisement. Alternatively, a single message mayinclude multiple advertisements that include multiple network layeraddresses and associated sequence values. In another example, a singleadvertisement may be separated into several portions and portions of theadvertisement may span across multiple messages.

After the sequence value is assigned, the network device transmits anadvertisement at 304 into a computer network to notify other networkdevices that the host is associated with this particular network device.Such an advertisement may include a host network layer address, sequencevalue assigned to the host (or associated with the host network layeraddress), and a network layer address that identifies the network devicethat transmitted the advertisement.

FIG. 4 is a flow diagram of detailed operations, in accordance with anexample embodiment, for generating a sequence value. In an exampleembodiment, method 400 may be implemented by sequence value assignmentmodule 204 of FIG. 2, employed in an apparatus, such as switch 136 ofFIG. 1. Before a sequence value is assigned, the network device maygenerate the sequence value for assignment to a host. As shown in FIG.4, in an example embodiment, a new sequence value may be generated byaccessing an existing sequence value at 402. The existing sequence valuemay be a previously received sequence value from another network devicereceived by way of an advertisement. To define a new sequence value, theexisting sequence value is incremented at 404. For example, a newsequence value can be generated by adding 1 to an existing sequencevalue of 60 to define a new sequence value of 61. Similarly, a newsequence value can be generated by incrementing the letter A to a next,sequential letter B. The existing sequence value may be incremented by avariety of values and offsets. It should be noted that in addition toincrementing an existing sequence value, the new sequence value can alsobe generated by decreasing the existing sequence value. For example, anew sequence value can be generated by subtracting 1 from an existingvalue of −1 to define a new sequence value of −2.

In another example embodiment, the generation of the new sequence valuemay be based on time. Here, the new sequence value can be derived from asystem clock. All the network devices within a computer network aresynchronized to the system clock. The new sequence value can be the time(e.g., hour, minutes, seconds, milliseconds, and other time) from thesystem clock or a value derived from the system clock.

FIG. 5 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating the assignment of a sequence valueto a host and the advertisement of the sequence value. Computer network500 includes switches 551-554, which may belong to one or moresub-domains. As shown in FIG. 5, host 50 is associated with switch 551.Upon detection of host 501, switch 551 assigns a sequence value of “30”to host 501 (or to host network layer address). A system clock isprovided in computer network 500 and switches 551-554 are synchronizedto the system clock. In this example embodiment, the sequence value isbased on time and the sequence value “30” may be the minutes derivedfrom the system clock.

After the sequence value is assigned, switch 551 transmits advertisement502 to routers 552 and 554 of the association with host 501.Advertisement 502 includes the IP address of host 501, the sequencevalue “30” associated with the host, and an IP address of switch 551. Asa result of receiving advertisement 502, switches 552 and 554 transmitdata 504 to host 501. It should be appreciated that, depending on thenetwork configuration and network protocol used, advertisement 502 maybe transmitted to a variety of network devices and transmitted by avariety of different methods. For example, advertisement 502 may betransmitted to all routers within a sub-domain using multicast broadcastwhere the advertisement is transmitted as native packets. In stillanother example, advertisement 502 is transmitted only to a home anchorrouter using unicast broadcast where the advertisement 502 is tunneledbetween home anchor border routers and foreign sub-domain borderrouters. Here, advertisement 502 is tunneled between sub-domain borderrouters and foreign sub-domain border routers.

FIG. 6 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating the assignment of a sequence valueto a host after the host has moved. Computer network 500 of FIG. 6includes switches 551-554. As described previously in FIG. 5, host 501was initially associated with switch 551. However, as shown in FIG. 6,host 501 moved and the host is now associated with switch 552. Upondetection of host 501, switch 552 assigns a sequence value of “35” tohost 501 (or to host network layer address). Here, switches 551-554 aresynchronized with a system clock. Like switch 551, switch 552 generatesthe sequence value based on time. The sequence value “35” may be theminutes derived from the system clock.

After the sequence value of “35” is assigned, switch 552 transmitsadvertisement 602 to switches 551 and 553 of the association with host501. Here, advertisement 602 includes the IP address of host 501, thesequence value “35” associated with the host, and the IP address ofswitch 552 that transmitted the advertisement. As a result of receivingadvertisement 602, switch 551 transmits data 504 to host 501. However,as explained below, depending on the sequence values received, switch553 may or may not transmit data to host 501 that is in communicationwith switch 552.

FIG. 7 is a flow diagram of a general overview of a method, inaccordance with an example embodiment, for host route convergence basedon rankings. In an example embodiment, method 700 may be implemented bysequence value assignment module 204 of FIG. 2, employed in anapparatus, such as switch 136 of FIG. 1. A network device may receivemultiple advertisements. For example, as shown in FIG. 7, a firstadvertisement is received at 702 from a network device. This firstadvertisement may include a host network layer address, a first sequencevalue associated with the host network layer address, and a networklayer address of the network device. At 704, a second advertisement isreceived from a different network device. This second advertisementincludes the same host network layer address, a second sequence valueassociated with the host network layer address, and a network layeraddress of this different network device.

With the first and second sequence values, the first sequence value isranked relative to the second sequence value at 706. In an exampleembodiment, the first and second sequence values may be ranked bycomparing the first and second sequence values. After the ranking,routes are converged onto one or more hosts based on the ranking. Forexample, as explained in more detail below, data is transmitted to oneof the network devices at 708 based on the ranking.

FIG. 8 is a flow diagram of more detailed operations, in accordance withan example embodiment, for host route convergence based on rankings. Inan example embodiment, method 800 may be implemented by sequence valueassignment module 204 of FIG. 2, employed in an apparatus, such asswitch 136 of FIG. 1. As shown in FIG. 8, a host network layer address,a first sequence value associated with the host network layer address,and a first network layer address associated with a network device arereceived in a first advertisement at 802. At 804, the same host networklayer address, a second sequence value associated with the same hostnetwork layer address, and a second network layer address associatedwith a different network device are received in a second advertisement.The first sequence value is then ranked relative to the second sequencevalue. In an example embodiment, as shown at 806, the first and secondsequence values may be ranked by comparing the first sequence value withthe second sequence value.

In an example embodiment, the advertisement with a lower sequence valueranking is rejected. Instead, routes converge on the host with thehigher sequence value ranking. For example, a determination is made at808 as to whether the first sequence value is greater than the secondsequence value. A sequence value of “324,” for instance, is rankedhigher than a sequence value of “322.” In another example, a sequencevalue of “AA” is ranked higher than “A.” In still another example, asequence value of “−1” is ranked higher than a sequence value of “−10.”

If the first sequence value is greater than the second sequence value,then routes to the host converge based on the first advertisement withthe first sequence value. Here, for example, one or more paths arecomputed to the network device that is located at the first networklayer address. Thereafter, data for the host is transmitted to the firstnetwork layer address associated with the network device at 810 becausethe first sequence value is ranked higher than the second sequencevalue. On the other hand, if first sequence value is less than secondsequence value, then the routes to the host converge based on the secondadvertisement with the second sequence value. Here, for example, one ormore paths are computed to the other network device that is located atthe second network layer address. In this example, data for the hostthen is transmitted to the second network layer address associated withthe other network device at 812.

It should be noted that routes may also converge on the host with thelower ranked sequence value. In this other embodiment, the firstsequence value is compared with the second sequence value. If the firstsequence value is less than or ranked lower than the second sequencevalue, then data is transmitted to the first network layer address. Onthe other hand, if the first sequence value is greater than the secondsequence value, then data is transmitted to the second network layeraddress.

FIG. 9 is a simplified diagram of a computer network, in accordance withan example embodiment, illustrating host route convergence. Computernetwork 500 includes switches 551-554, which may belong to one or moresub-domains. As discussed above in FIGS. 5 and 6, host 501 moved fromswitch 551 to switch 552. When host 501 is initially associated withswitch 551, the host transmitted advertisement 502 with sequence value“30” to switch 554. However, host 501 moved and, as shown in FIG. 9, isnow associated with switch 552. Upon detection of host 501, switch 552assigns a sequence value of “35” to host 501 (or to host network layeraddress) and the switch transmits advertisement 602 with sequence value“35” to switches 551 and 553.

Switch 553 receives advertisement 602 with sequence value “35”associated with host network layer address. However, switch 553 alsoreceives advertisement 502 with sequence value “30” associated with thesame host network layer address. Switch 551 did not originally transmitadvertisement 502 directly to switch 553. Instead, switch 554, whichreceived advertisement 502, relays or forwards the advertisement toswitch 553. This relay results in a delay of transmission ofadvertisement 502 to switch 553, and therefore switch 553 receives bothadvertisements 502 and 602 at about the same time.

In this example embodiment, computer network 500 is configured toconverge on a host, such as host 501, with the highest ranked sequencevalue. Switch 553 therefore is configured to rank the sequence value“35” associated with advertisement 602 relative to sequence value “30”associated with advertisement 502. In an example embodiment, switch 553compares sequence value “35” with sequence value “30.” Sequence value“35” is greater or ranked higher than sequence value “30.” As a result,routes in computer network 500 converge on host 501 associated withswitch 552 instead of switch 551. Switch 553 therefore transmits data504 to switch 552 associated with host 501 and not to switch 551. Theuse of sequence values may therefore result in fast host routeconvergence because computer network 500 does not have to wait forwithdraw of the route from a disassociated network device, such asswitch 551.

FIG. 10 is a simplified block diagram of a machine in the example formof a computing system within which a set of instructions, for causingthe machine to perform any one or more of the methodologies discussedherein, may be executed. In alternative embodiments, the machine may beconnected (e.g., networked) to other machines. The machine may be anetwork router (e.g., label switch router), switch or bridge, or anymachine capable of executing a set of instructions (sequential orotherwise) that specify actions to be taken by that machine. Further,while only a single machine is illustrated, the term “machine” shallalso be taken to include any collection of machines that individually orjointly execute a set (or multiple sets) of instructions to perform anyone or more of the methodologies discussed herein.

The example computing system 1000 includes processor 1002 (e.g., acentral processing unit (CPU)), main memory 1004 and static memory 1006,which communicate with each other via bus 1008. Computing system 1000may also include disk drive unit 1016 and network interface device 1020.

Disk drive unit 1016 includes machine-readable medium 1022 on which isstored one or more sets of instructions and data structures (e.g.,software 1024) embodying or utilized by any one or more of themethodologies or functions described herein. Software 1024 may alsoreside, completely or at least partially, within main memory 1004 and/orwithin processor 1002 during execution thereof by computing system 1000,with main memory 1004 and processor 1002 also constitutingmachine-readable, tangible media. Software 1024 may further betransmitted or received over network 1026 via network interface device1020 utilizing any one of a number of well-known transfer protocols(e.g., Hypertext Transfer Protocol (HTTP)).

While machine-readable medium 1022 is shown in an example embodiment tobe a single medium, the term “machine-readable medium” should be takento include a single medium or multiple media (e.g., a centralized ordistributed database, and/or associated caches) that store the one ormore sets of instructions. The term “machine-readable medium” shall alsobe taken to include any medium that is capable of storing, encoding orcarrying a set of instructions for execution by the machine and thatcause the machine to perform any one or more of the methodologies of thepresent application, or that is capable of storing, encoding or carryingdata structures utilized by or associated with such a set ofinstructions. The term “machine-readable medium” shall accordingly betaken to include, but not be limited to, solid-state memories, opticaland magnetic media, and carrier wave signals.

Although an embodiment has been described with reference to specificexample embodiments, it will be evident that various modifications andchanges may be made to these embodiments without departing from thebroader spirit and scope of the invention. Accordingly, thespecification and drawings are to be regarded in an illustrative ratherthan a restrictive sense.

The Abstract of the Disclosure is provided to comply with 37 C.F.R.§1.72(b), requiring an abstract that will allow the reader to quicklyascertain the nature of the technical disclosure. It is submitted withthe understanding that it will not be used to interpret or limit thescope or meaning of the claims. In addition, in the foregoing DetailedDescription, it can be seen that various features are grouped togetherin a single embodiment for the purpose of streamlining the disclosure.This method of disclosure is not to be interpreted as reflecting anintention that the claimed embodiments require more features than areexpressly recited in each claim. Rather, as the following claimsreflect, inventive subject matter lies in less than all features of asingle disclosed embodiment. Thus the following claims are herebyincorporated into the Detailed Description, with each claim standing onits own as a separate embodiment.

What is claimed is:
 1. A method at a network device, the methodcomprising: at a network switch: receiving a previous advertisementincluding a host network layer address of a host and an existingsequence value associated with the host network layer address; after thereceiving, detecting that the host is associated with the networkswitch, the host being a device or a program application that provides aservice; generating a sequence value at the network switch based on thedetecting, the generating including changing the received existingsequence value to a next sequential value that represents the sequencevalue; associating the sequence value with the host network layeraddress of the host; and transmitting an advertisement to a differentnetwork switch, the advertisement including the host network layeraddress and the sequence value.
 2. The method of claim 1, wherein theadvertisement includes a network layer address of the network switch,the host being in communication with the network switch.
 3. The methodof claim 1, wherein the generating the sequence value comprises:incrementing the received existing sequence value to the next sequentialvalue.
 4. The method of claim 1, wherein the generating the sequencevalue comprises: decreasing the received existing sequence value to thenext sequential value.
 5. The method of claim 1, wherein the existingsequence value includes a letter, and the changing the sequence valueincludes changing the letter to a next sequential letter that representsthe sequence value.
 6. The method of claim 5, wherein the changing theletter includes increasing the letter to the next sequential letter thatrepresents the sequence value.
 7. The method of claim 5, wherein thechanging the letter includes decreasing the letter to the nextsequential letter that represents the sequence value.
 8. An apparatuscomprising: a network switch including: a processor; and a memory incommunication with the processor, the memory comprising instructionsexecutable by the processor, when the instructions are executed theprocessor being operable to: receive a previous advertisement includinga host network layer address of a host and an existing sequence valueassociated with the host network layer address; after the previousadvertisement is received, generate, based on detecting that the host isassociated with the network switch, a sequence value at the networkswitch, wherein the processor is configured to generate by changing thereceived existing sequence value to a next sequential value thatrepresents the sequence value, the host being a device or a programapplication that provides a service; associate the sequence value withthe host network layer address of the host; and transmit anadvertisement to a different network switch, the advertisement includingthe host network layer address and the sequence value.
 9. The apparatusof claim 8, wherein the advertisement includes a network layer addressof the network switch, the host being in communication with the networkswitch.
 10. The apparatus of claim 8, wherein the processor is furtheroperable to: increment the received existing sequence value to the nextsequential value.
 11. The apparatus of claim 8, wherein the processor isfurther operable to: decrease the received existing sequence value tothe next sequential value.
 12. A non-transitory machine-readable storagemedium comprising instructions that, when executed by one or moreprocessors of a network switch, cause the network switch to performoperations comprising: receiving a previous advertisement including ahost network layer address of a host and an existing sequence valueassociated with the host network layer address; after the receiving,detecting that the host is associated with the network switch, the hostbeing a device or a program application that provides a service;generating a sequence value at the network switch based on thedetecting, the generating including changing the received existingsequence value to a next sequential value that represents the sequencevalue; associating the sequence value with the host network layeraddress of the host; and transmitting an advertisement to a differentnetwork switch, the advertisement including the host network layeraddress and the sequence value.
 13. The storage medium of claim 12,wherein the advertisement includes a network layer address of thenetwork switch, the host being in communication with the network switch.14. The storage medium of claim 12, wherein the generating the sequencevalue comprises: incrementing the received existing sequence value tothe next sequential value.
 15. The storage medium of claim 12, whereinthe generating the sequence value comprises: decreasing the receivedexisting sequence value to the next sequential value.